package com.bdqn.ch01.Sl;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

/**
 * GetClassFieldsInfo
 * 示例4
 * @aurhor Administrator  whs
 * @since 2024/6/26
 */
public class GetClassFieldsInfo {

    /**
     *
     * @param args
     */
    public static void main(String[] args) {
        Field[] fields = Person.class.getDeclaredFields();

        //展示一些属性
        System.out.println("=========属性展示=========");
        for (Field field : fields){
            System.out.println("属性名：" + field.getName());     // 属性名：name
            System.out.println("类型：" + field.getType().getName()); // 类型：java.lang.String
            System.out.print("访问修饰符：" );   // private
            int modifiers = field.getModifiers();

            // 判断属性的访问修饰符
            if ((modifiers & Modifier.PUBLIC)== Modifier.PUBLIC){
                System.out.println("public");
            }else if ((modifiers & Modifier.PROTECTED)== Modifier.PROTECTED){
                System.out.println("protected");
            }else if ((modifiers & Modifier.PRIVATE)== Modifier.PRIVATE){
                System.out.println("private");
            }else {
                System.out.println("default(package)");
            }

            // 判断属性是否有 static 修饰符
            if ((modifiers & Modifier.STATIC)== Modifier.STATIC){
                System.out.println("这是一个静态属性");
            }
            //判断该属性是否有 final 属性
            if ((modifiers & Modifier.FINAL)== Modifier.FINAL){
                System.out.println("这是一个final属性");
            }
            System.out.println("-----------------------------------");

        }
    }
}
//
//=========属性展示=========
//属性名：name
//类型：java.lang.String
//访问修饰符：private
//-----------------------------------
//属性名：age
//类型：int
//访问修饰符：default(package)
//这是一个静态属性
//        这是一个final属性
//-----------------------------------
//属性名：address
//类型：java.lang.String
//访问修饰符：protected
//-----------------------------------
//属性名：massage
//类型：java.lang.String
//访问修饰符：public
//-----------------------------------
